package com.ft.oa.service.sys;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ft.oa.domain.dto.ApiResult;
import com.ft.oa.domain.dto.sys.SecurityUser;
import com.ft.oa.domain.dto.condition.SysUserDTO;
import com.ft.oa.domain.sys.SysAuth;
import com.ft.oa.domain.sys.SysRole;
import com.ft.oa.domain.sys.SysUser;

import java.util.List;
import java.util.Set;

/**
 * 用户服务
 */
public interface SysUserService {

    /**
     * 根据用户名查询用户
     * @param username
     * @return
     */
    SecurityUser loadByUsername(String username);

    /**
     * 新增用户
     * @param user
     */
    ApiResult add(SysUserDTO user);

    /**
     * 更新用户角色
     */
    void updateUserRoles(Long userId, Set<Integer> roleIds);

    /**
     * 更新用户部门
     */
    void updateUserDepts(Long userId, Set<Integer> deptIds);

    /**
     * 分页查询
     * @param user
     * @param page
     * @param size
     * @return
     */
    Page<SysUser> page(SysUserDTO user, int page, int size);

    /**
     * 删除用户
     */
    void del(Long id);

    /**
     * 编辑用户
     * @param user
     */
    ApiResult edit(SysUserDTO user);

    /**
     * 可用用户列表
     * @return
     */
    List<SysUser> listAll();

    /**
     * 用户角色集合
     * @return
     */
    List<SysRole> userRoles(Long uid);
    /**
     * 角色权限集合
     * @return
     */
    List<SysAuth> roleAuths(Set<Integer> roleIds);

    /**
     * 获取当前登录用户信息
     * @return
     */
    SysUser info();
}
